package com.qidianit.task.mapper;

import com.qidianit.task.pojo.Project;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ProjectMapper {
    /**
     * 多条件查询全部，分页使用分页插件实现，所以没有分页参数
     * @param project
     * @return
     */
    List<Project> selectList(Project project);

    /**
     * 通过id查找project
     * @param projectId
     * @return
     */
    Project selectById(String projectId);

    /**
     * 通过编辑更新项目
     * @param project
     * @return
     */
    int updateProject(Project project);

    /**
     * 通过项目id删除,做逻辑上删除，不做物理上删除
     * @param projectId
     * @return
     */
    int deleteById(String projectId);

    /**
     * 通过修改项目的状态使其为归档状态
     * @param projectId
     * @return
     */
    int pigeonholeById(String projectId);

    /**
     * 批量删除操作
     * @param projectIds 要删除的项目id数组
     * @return
     */
    int deleteBySelect(List<String> projectIds);

    /**
     * 批量归档
     * @param projectIds
     * @return
     */
    int pigeonholeBySelect(List<String> projectIds);

    /**
     * 批量发布
     * @param projectIds
     * @return
     */
    int publishBySelect(List<String> projectIds);

    /**
     * 查询删除列表
     * @param project
     * @return
     */
    List<Project> selectDeleteList(Project project);

    /**
     * 在归档项目列表中，点击恢复按钮，将项目状态更新为草稿状态
     * @param projectId
     * @return
     */
    int updateDraftById(String projectId);

    //统计全项目的数量
    int selectAllCount();
    //统计我的项目数量
    int selectMyCount(Long userId);
}
